From: Jasper St. Pierre Date: Sat, 16 Feb 2013 17:52:37 +0000 (-0500) Subject: grabHelper: Track the grab before trying to set key focus X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~4820 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=180000a5317e771a7860419fafa8431295547dd7;p=gnome-shell.git grabHelper: Track the grab before trying to set key focus If we don't this for a nested grabFocus grab, the notify::key-focus will be called, not think that the new key focus is part of the grab, and cancel the full grab. This leaves the grab helper in an inconsistent and confused state, as the grab is pushed onto the grab stack after. https://bugzilla.gnome.org/show_bug.cgi?id=693975 --- diff --git a/js/ui/grabHelper.js b/js/ui/grabHelper.js index 058524ae8..e31cc2f18 100644 --- a/js/ui/grabHelper.js +++ b/js/ui/grabHelper.js @@ -167,6 +167,8 @@ const GrabHelper = new Lang.Class({ if (params.grabFocus && !this._takeFocusGrab(hadFocus)) return false; + this._grabStack.push(params); + if (params.focus) { params.focus.grab_key_focus(); } else if (newFocus && (hadFocus || params.grabFocus)) { @@ -177,7 +179,6 @@ const GrabHelper = new Lang.Class({ if ((params.grabFocus || params.modal) && !this._capturedEventId) this._capturedEventId = global.stage.connect('captured-event', Lang.bind(this, this._onCapturedEvent)); - this._grabStack.push(params); return true; },